iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

為了接下來的需求,要先教大家如何讓 Kubenetes 成功配置到 GPU ,

Kubenetes 配置 GPU 相關筆記

tags: 研究室碩一筆記

前置須知:

  • MasterNode:代表主結點。
  • WorkerNode:代表 Worker 節點或子結點。

參考連結 :

K8s-Device-Plugin
https://github.com/NVIDIA/k8s-device-plugin
https://ithelp.ithome.com.tw/articles/10244493

環境

在本次測試中

稍後可用於判斷是否配置成功用途
運行NVIDIA GPU Device Plugin 需要所有 Node 節點滿足以下條件
( 如果允許 Master 節點部署 Pod,那麼 Master 節點也需要滿足 )

  • 顯卡驅動版本大於 361.93
  • Nvidia-Docker版本大於 2.0
  • 將 Nvidia 配置為 Docker 默認的 runtime
  • Kubernetes 版本大於 1.11
# 實驗環境
# MasterNode
系統版本:Ubuntu 20.04.4 LTS
Kernel 版本:GNU/Linux 5.13.0-44-generic x86_64
Docker-CE 版本:Docker version 23.0.1, build a5ee5b1
Nvidia-Docker 版本:2.12.0
Kubernetes 版本:v1.22.17
NVIDIA/k8s-device-plugin版本:0.13.0
GPU : 2080ti * 1

# WorkerNode
系統版本:Ubuntu 20.04.4 LTS
Kernel 版本:GNU/Linux 5.13.0-44-generic x86_64
Docker-CE 版本:Docker version 23.0.1, build a5ee5b1
Nvidia-Docker 版本:2.12.0
Kubernetes 版本:v1.22.17
NVIDIA/k8s-device-plugin版本:0.13.0
GPU : 2080ti * 1

MasterNode Nvidia-SMI 相關資訊

WorkerNode Nvidia-SMI 相關資訊

如果沒有安裝 Nvidia 相關套件及 CUDA 請先看後面教學進行安裝,

確認有安裝 Nvidia 相關套件以及 CUDA 之後,

vim /etc/docker/daemon.json

ubuntu@10.0.0.129 的 daemon.json

ubuntu-PowerEdge-R740@10.0.0.128 的 daemon.json

原本 Defalut 的 runtime 不是上圖的模樣,
新增 "default-runtime": "nvidia" 鍵值之後,
再 systemctl restart docker 重啟 docker 。

安装 NVIDIA GPU plugin

# 安裝 Nvidia-Container-Toolkit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/libnvidia-container.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

# 安装 NVIDIA GPU plugin
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.13.0/nvidia-device-plugin.yml

Nvidia/gpu Daemonset 建置

在 kubenetes 方面上面雖然下載完 plugin 但仍然需要建置 Nvidia plugin 的 daemonset,

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml

運行完指令之後會出現,

我們可以透過這個指令看是否有成功讓 Node 被配置 Nvidia/gpu ,

kubectl get nodes -o=json | jq '.items[] | {name: .metadata.name, gpu: .status.allocatable."nvidia.com/gpu"}'

原本剛建置好環境應該是下圖,

配置好 daemonset 之後就會變成,

測試

用 Docker 小測試一下,

docker run --gpus all nvcr.io/nvidia/cuda:11.4.0-base nvidia-smi

結果應該要輸出,完工。


上一篇
Day21 Kubenetes 多節點重設與安裝教學
下一篇
Day23 Kubenetes Mount 資料集並創建 PV/PVC
系列文
你累了嗎,今天來點克勞內提夫!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言